"Hello, World!"
The first program you need to learn in any language is called, "Hello, World!" and
its purpose is to simply print the words "Hello, World!" to the screen. In Java it
looks like this.
Hello.java |
1 | public class Hello { |
2 | public static void main(String[] args) { |
3 | System.out.println("Hello, world"); |
4 | } |
5 | } |
$ javac Hello.java
| $ java Hello
Hello, world
|
There is quite a lot of strange words and symbols in this code,
you don't need to worry too much about what they mean at this
point.
Already in this simple program there are some advanced concepts:
- The text inside quotes is a string constant. It is
effectively just a list of characters.
- Method calls: System.out.println("Hello, world") is an example of a call to the println()
method. A method is like a task or unit of work. Syntactically, it looks like a word followed
by one or more items in parenthesis. The println() method prints an arbitrary
string of characters on the screen.
- Semi-colons: The semi-colon is used by Java to divide up the individual commands we give to
the program. In this example there is only one command, and that command is to print the
string "Hello, world" to the screen.
- Arguments: The string "Hello, world" is called an argument, and we say that
we are passing the argument "Hello, world" to the println() method.
- Method definitions: main(String[] args) is an example of a method definition. Note the
parentheses and also the curly brackets, i.e. the {}'s signify that we have a method
definition. This main() method always prints the specific string "Hello, world" to
the screen. To write a java program you must write a static method named "main".
By convention, this is the place where java begins execution of your program.
- Class: For now, think of a class as just a means of categorizing things. The main() method
we are defining lives inside a class named Hello. Your class name should always match
your file name, and class names should always begin with a capital letter.
Math1.java |
1 | public class Math1 { |
2 | public static void main(String[] args) { |
3 | System.out.println("string concat" + "enation"); |
4 | System.out.println(3); |
5 | System.out.println("this is a three: "+3); |
6 | System.out.println("3+7/3-4="+(3+7/3-4)); |
7 | System.out.println("3.0+7.0/3.0-4.0="+(3.0+7.0/3.0-4.0)); |
8 | System.out.println("done"); |
9 | } |
10 | } |
$ javac Math1.java
| $ java Math1
string concatenation
3
this is a three: 3
3+7/3-4=1
3.0+7.0/3.0-4.0=1.333333333333334
done
|
New things here:
- The body of our main() function now has four commands in it, instead of just one. Notice
that each of them terminates with a semicolon.
- Line 3 uses the concept of string concatenation. In other words,
we can write two strings and use + to join
them together.
- Line 4 is our first example of a numeric constant. Specifically it is the integer 3.
- Line 5 adds an integer to a string. Java always knows how to convert something to a string,
be it an integer, or some more advanced data type. It implicitly makes the conversion,
concatenates the strings to one string, and generates output.
- Line 6 adds a mathematical expression to a string. The Java compiler will follow normal
mathematical ordering -- it will do multiplies before adds, allow grouping of expressions
using parentheses, etc. Notice that no decimal points are used. As a result, this
is an example of integer math. When doing integer math, remainders are ignored. Thus, 7/3
is just 2.
- Line 7 is like line 6 but uses double precision math. The presence of a decimal point
is what makes the difference. In double precision math, remainders are not ignored.
Ops.java |
1 | public class Ops { |
2 | public static void main(String[] args) { |
3 | System.out.println("integer:"); |
4 | System.out.println(" 10/3="+(10/3)); // division |
5 | System.out.println(" 10*3="+(10*3)); // multiplication |
6 | System.out.println(" 10%3="+(10%3)); // remainder of 10 / 3. |
7 | System.out.println(" 10+3="+(10+3)); // addition |
8 | System.out.println(" 10-3="+(10-3)); // subtraction |
9 | System.out.println(" 10 & 3="+(10 & 3)); // bitwise logical and |
10 | System.out.println(" 10 ^ 3="+(10 ^ 3)); // bitwise logical exclusive or |
11 | System.out.println(" 10 | 3="+(10 | 3)); // bitwise logical or |
12 | System.out.println("floating point:"); |
13 | System.out.println(" 10.0/3.1="+(10.0/3.1)); // division |
14 | System.out.println(" 10.0*3.1="+(10.0*3.1)); // multiplication |
15 | System.out.println(" 10.0+3.1="+(10.0+3.1)); // addition |
16 | // Tricky! Scientific notation |
17 | System.out.println(" 1.0e1-3.1="+(1.0e1-3.1)); // subtraction |
18 | } |
19 | } |
$ javac Ops.java
| $ java Ops
integer:
10/3=3
10*3=30
10%3=1
10+3=13
10-3=7
10 & 3=2
10 ^ 3=9
10 | 3=11
floating point:
10.0/3.1=3.225806451612903
10.0*3.1=31.0
10.0+3.1=13.1
1.0e1-3.1=6.9
|
Here we see a more complete enumeration of the mathematical operators available to us
for doing both integer and floating point arithmetic. Notice in the last line we've
written "10.0" as "1.0e1". This is a kind of scientific notation, a shorthand for
1.0 * pow(10,1).
Note the logical operations available to us for the integer values. Don't worry too much
if you don't know what logical and, or, and exclusive or are. We'll get back to these
concepts later.
We also introduced comments: Everything after a // is ignored by the compiler. We can do
this to write all kinds of helpful explanations into our code.
|